home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-02-22 | 2.0 KB | 106 lines |
- 10 REM ***************************
- 20 REM ** AMAZE **
- 30 REM ***************************
- 40 REM
- 50 CLEAR
- 60 SCREEN 1
- 70 CLS
- 80 KEY OFF
- 90 COLOR 0,1
- 100 LOCATE 12,12
- 110 PRINT "*** AMAZE ***"
- 120 GOSUB 760
- 130 CLS
- 140 LOCATE 7,1
- 150 INPUT "How many paths wide ";WIDE
- 160 IF WIDE > 0 AND WIDE < 160 THEN 200
- 170 PRINT"Valid range is 1 to 159"
- 180 BEEP
- 190 GOTO 150
- 200 INPUT "How many paths high ";HIGH
- 210 IF HIGH >0 AND HIGH <100 THEN 260
- 220 PRINT "Valid range is 1 to 99"
- 230 BEEP
- 240 GOTO 200
- 250 REM
- 260 WINC=320/(WIDE+1)
- 270 HINC=200/(HIGH+1)
- 280 CLS
- 290 LINE (0,0)-(WIDE*WINC,HIGH*HINC),,B
- 300 COUNT=WIDE*HIGH
- 310 FOR I= 0 TO COUNT
- 320 PTR=(PTR+997) MOD COUNT
- 330 X=INT(PTR/HIGH)
- 340 Y=PTR-X*HIGH
- 350 X=X*WINC
- 360 Y=Y*HINC
- 370 IF POINT(X,Y) THEN 600
- 380 DIR=INT(4*RND+1)
- 390 DIR2=DIR
- 400 DIR=DIR MOD 4 + 1
- 410 XN =((DIR=1)-(DIR=3))*WINC+X
- 420 YN =((DIR=2)-(DIR=4))*HINC+Y
- 430 IF POINT(XN,YN)=0THEN 550
- 440 LINE(X,Y)-(XN,YN)
- 450 DIR=INT(4*RND+1)
- 460 FOR K=1 TO 4
- 470 DIR=DIR MOD 4+1
- 480 XN=((DIR=1)-(DIR=3))*WINC+X
- 490 YN=((DIR=2)-(DIR=4))*HINC+Y
- 500 IF POINT(XN,YN)THEN 590
- 510 LINE(X,Y)-(XN,YN)
- 520 X=XN
- 530 Y=YN
- 540 GOTO 450
- 550 IF DIR<> DIR2 THEN 580
- 560 X=XN
- 570 Y=YN
- 580 GOTO 400
- 590 NEXT K
- 600 NEXT I
- 610 REM
- 620 REM Open the doors on each side
- 630 Y=(HIGH/2)*HINC
- 640 LINE (0,Y)-(0,Y+HINC),0
- 650 LINE (WIDE*WINC,Y)-(WIDE*WINC,Y+HINC),0
- 660 REM
- 670 REM Done ...
- 680 REM If user presses "p" then dump graphics to printer
- 690 REM Else draw another maze whenever any key is pressed.
- 700 K$=INKEY$
- 710 IF K$="" THEN 700
- 720 IF K$="p" OR K$="P"THEN GOSUB 870
- 730 GOTO 130
- 740 REM
- 750 REM Wait for user and be randomizing the generator
- 760 LOCATE 25,9
- 770 PRINT "Press any key to begin";
- 780 RNDM=RND
- 790 K$=INKEY$
- 800 IF K$= "" THEN 780
- 810 RANDOMIZE 64000*RND-32000
- 820 LOCATE 25,1
- 830 PRINT SPACE$(39);
- 840 RETURN
- 850 REM
- 860 REM Subroutine to dump graphic maze to printer
- 870 DEF SEG=&HB800
- 880 E$=CHR$(27)
- 890 WIDTH "LPT1:",255
- 900 LPRINT E$+"1";
- 910 LPRINT E$+"W" +CHR$(1);
- 920 FOR ROW = 0 TO 79
- 930 A$= ""
- 940 FOR COL=99 TO 0 STEP -1
- 950 LOCA$=CHR$(PEEK(COL*80+ROW))
- 960 LOCB$=CHR$(PEEK(COL*80+ROW+&H2000))
- 970 A$=A$+LOCB$+LOCB$
- 980 A$=A$+LOCA$+LOCA$
- 990 IF COL<>49 THEN 1020
- 1000 LPRINT E$+"K"+CHR$(144)+CHR$(1)+A$;
- 1010 A$= ""
- 1020 NEXT COL
- 1030 LPRINT A$
- 1040 NEXT ROW
- 1050 RETURN
-